/*
 *    Copyright (c) 2018-2025, cloud All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the pig4cloud.com developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: cloud
 */

package com.fuyao.cloud.asset.vo.card;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fuyao.cloud.common.data.mybatis.SearchCondition;
import com.fuyao.cloud.common.data.mybatis.SearchOp;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 资产信息管理
 *
 * @author liyue
 * @date 2021-11-18 18:44:56
 */
@Data
@ApiModel(value = " 资产信息查询对象")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AssetCardSearchDTO {

    @SearchCondition()
    @ApiModelProperty(value = "所属父类资产ID")
    private Long parentId;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "所属父类资产名称")
    private String parentName;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "资产编号")
    private String parentNumber;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "使用单位全名称")
    private String parentUseunitname;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "存放地全称")
    private String parentStorageplace;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "标准型号名称")
    private String sauName;

    @SearchCondition()
    @ApiModelProperty(value = "标准型号ID")
    private Long sauId;

    @SearchCondition()
    @ApiModelProperty(value = "资产类别ID")
    private Long ctiId;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "资产类别名称")
    private String ctiName;

    @SearchCondition()
    @ApiModelProperty(value = "资产类别类型")
    private String ctiType;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "资产类别全名称")
    private String classified;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "资产类别全编码")
    private String classifiedCode;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "资产编码")
    private String number;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "资产名称")
    private String name;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "英文名称")
    private String enName;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "资产别名")
    private String alias;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "规格型号")
    private String model;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "计量单位")
    private String unit;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "SN号")
    private String sn;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "会计凭证号")
    private String voucherNo;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "所属单位")
    private String belongdept;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "所属单位全名称")
    private String belongdeptFullname;

    @SearchCondition()
    @ApiModelProperty(value = "所属单位id")
    private Long belongdeptId;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "使用单位")
    private String usedept;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "使用单位全名称")
    private String usedeptFullname;

    @SearchCondition()
    @ApiModelProperty(value = "使用单位id")
    private Long usedeptId;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "使用人")
    private String useName;

    @SearchCondition()
    @ApiModelProperty(value = "使用人id")
    private Long useId;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "存放地点")
    private String location;

    @SearchCondition()
    @ApiModelProperty(value = "存放地点id")
    private Long locationId;

    @SearchCondition()
    @ApiModelProperty(value = "存放地点类型")
    private String locationType;

    @SearchCondition()
    @ApiModelProperty(value = "房间ID")
    private Long houseId;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "房间名称")
    private String houseName;

    @SearchCondition()
    @ApiModelProperty(value = "来源")
    private String source;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "合 同 号")
    private String contractNumber;

    @SearchCondition()
    @ApiModelProperty(value = "合 同 ID")
    private Long contractId;

    @SearchCondition()
    @ApiModelProperty(value = "原    值")
    private BigDecimal originalAmount;

    @SearchCondition()
    @ApiModelProperty(value = "累计折旧")
    private BigDecimal depreciation;

    @SearchCondition(op = SearchOp.GT, mappingField = "amount")
    @ApiModelProperty(value = "金额大于")
    private BigDecimal amountGt;

    @SearchCondition(op = SearchOp.LT, mappingField = "amount")
    @ApiModelProperty(value = "金额小于")
    private BigDecimal amountLt;

    @SearchCondition()
    @ApiModelProperty(value = "货币单位")
    private String monetaryUnit;

    @SearchCondition()
    @ApiModelProperty(value = "资产状态")
    private String status;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "生 产 厂")
    private String maker;

    @SearchCondition()
    @ApiModelProperty(value = "生 产 厂ID")
    private Long makerId;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "供 应 商")
    private String supplier;

    @SearchCondition()
    @ApiModelProperty(value = "供 应 商ID")
    private Long supplierId;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "供应商联系人")
    private String supplierUser;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "供应商联系电话")
    private String supplierPhone;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "品牌")
    private String brand;

    @SearchCondition()
    @ApiModelProperty(value = "维保到期")
    private LocalDate maintenanceDate;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "维保说明")
    private String maintenanceInfo;

    @SearchCondition()
    @ApiModelProperty(value = "保修截止日期")
    private LocalDate guaranteeDate;

    @SearchCondition()
    @ApiModelProperty(value = "出厂日期")
    private LocalDate factoryDate;

    @SearchCondition(op = SearchOp.BETWEEN)
    @ApiModelProperty(value = "购入日期")
    private List<LocalDate> buyDate;

    @SearchCondition()
    @ApiModelProperty(value = "建档日期")
    private LocalDate recordDate;

    @SearchCondition()
    @ApiModelProperty(value = "取得日期")
    private LocalDate acquireDate;

    @SearchCondition()
    @ApiModelProperty(value = "始用日期")
    private LocalDate useDate;

    @SearchCondition()
    @ApiModelProperty(value = "使用期限(月)")
    private BigDecimal usefulLife;

    @SearchCondition()
    @ApiModelProperty(value = "报废日期")
    private LocalDate scrapDate;

    @SearchCondition()
    @ApiModelProperty(value = "经费来源")
    private String fundsSource;

    @SearchCondition()
    @ApiModelProperty(value = "采购方式")
    private String purchaseMode;

    @SearchCondition()
    @ApiModelProperty(value = "固定资产")
    private String fixedAssets;

    @SearchCondition()
    @ApiModelProperty(value = "取得方式")
    private String acquireWay;

    @SearchCondition()
    @ApiModelProperty(value = "使用方式")
    private String usageOption;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "功能描述")
    private String description;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "备注")
    private String remarks;

    @SearchCondition(op = SearchOp.LIKE)
    @ApiModelProperty(value = "条型码")
    private String barcode;

}
